package tools
{
	//import flashx.textLayout.formats.*;
	
	import mx.collections.ArrayList;
	
	//import org.papervision3d.core.utils.MeshUtil;

	public class Geometry
	{
		public function Geometry()
		{
		}
		
		
		public static function distance(x1:int, y1:int, x2:int, y2:int): int
		{
			return Math.sqrt(Math.abs(x2-x1)*Math.abs(x2-x1) + Math.abs(y2-y1)*Math.abs(y2-y1));
		}
		
		
		
		/**
		 * Donne les coordonnée d'un vecteur point1 -> point2
		 * @param x x point 1 
		 * @param y y point 1
		 * @param x1 x point 2
		 * @param y1 y point 2
		 * @return Tableau [0]->x vecteur  [1]->y vecteur
		 */
		public static function coordonneVecteur(x:int,y:int,x1:int,y1:int):Array
		{
			var res:Array = new Array;
			res[0] = x1-x;
			res[1] = y1-y;
			return res;
		}
		
		/**
		 * Donne le point resultant de la translation du point de depart par le vecteur
		 * @param vecteur Vecteur de la translation
		 * @param point_x x du point de depart de la translation
		 * @param point_y y du point de depart de la translation
		 * @return Tableau [0]->x [1]->y
		 */
		public static function calculTranslation(vecteur:Array,point_x:int,point_y:int):Array
		{
			var res:Array = new Array;
			res[0] = vecteur[0] + point_x;
			res[1] = vecteur[1] +point_y;
			return res;
		}
		
		/**
		 * Donne les coordonnée du vecteur normalisé des deux points
		 * @param x x point 1 
		 * @param y y point 1
		 * @param x1 x point 2
		 * @param y1 y point 2
		 * @return Tableau [0]->x vecteur  [1]->y vecteur
		 */
		public static function calculNormal(x:*,y:*,x1:*,y1:*):Array
		{
			//Calcul la longueur entre les deux point
			var longeurMur:* = Geometry.distance(x,y,x1,y1);
			
			//Vecteur perpendiculaire
			var vPer:Array = new Array;
			vPer[0] = -(y - y1);
			vPer[1] = (x - x1); 
			
			//Vecteur normalisé perpendiculaire
			var vNper:Array = new Array;
			vNper[0] = vPer[0]/longeurMur;
			vNper[1] = vPer[1]/longeurMur;	
			
			return vNper;
		}
		
	}
}